//使用 Set 去除数组的重复
function dedupe(array){
    // your complement
   return [...new Set(array)]
}

//利用 Set 实现并集（Union）
function union(arr1,arr2){
    // your complement
    return [new Set([...arr1, ...arr2])]
}
//利用 Set 实现交集（Union）
function intersect(arr1,arr2){
    // your complement
    return new Set([...arr1].filter(x => arr2.has(x)));
}
//利用 Set 实现差集（Union）
function difference(arr1,arr2){
    // your complement
    return new Set([...arr1].filter(x => !arr2.has(x)));
}


// 封装一个函数实现 Map 转为 数组
function strMapToArray(map){
    // your compement
    return [...map]
 }
 
 // 封装一个函数实现 数组 转为 Map
 function arrayTostrMap(arr){
    // your compement ]
    return new Map(arr)
 }
 
 // 封装一个函数实现 Map 转为 对象
 function strMapToObj(strMap) {
   // your compement
   let obj = Object.create(null);
   for(let [k,v] of strMap){
       obj[k]=v;
   }
   return obj;
 }
 // 封装一个函数实现 对象转为 Map 
 function objToStrMap(obj) {
   let strMap = new Map();
   for (let k of Object.keys(obj)) {
     strMap.set(k, obj[k]);
   }
   return strMap;
 }
 
 // 封装一个函数实现 Map 转为 JSON
 function strMapToJson(strMap) {
   return JSON.stringify(strMapToObj(strMap));
 }
 
 // 封装一个函数实现 JSON 转为 Map
 function jsonToStrMap(jsonStr) {
   return objToStrMap(JSON.parse(jsonStr));
 }
 
const a={
    name: 'simon',
    password: '123456'
}
console.log(strMapToArray(objToStrMap(a)).join('&'))